/*
数字1的数量
给定一个十进制正整数N，写下从1开始，到N的所有正数，计算出其中出现所有1的个数。
例如：n = 12，包含了5个1。1,10,12共包含3个1，11包含2个1，总共5个1。
Input
输入N(1 <= N <= 10^9)
Output
输出包含1的个数
Input示例
12
Output示例
5
题意分析：
1位数的情况：
大于等于1的时候，有1个，小于1就没有。
2位数的情况：
N=13,个位数出现的1的次数为2，分别为1和11，十位数出现1的次数为4，分别为10,11,12,13，所以f(N) = 2+4。
N=23,个位数出现的1的次数为3，分别为1，11，21，十位数出现1的次数为10，分别为10~19，f(N)=3+10。
由此我们发现，个位数出现1的次数不仅和个位数有关，和十位数也有关，如果个位数大于等于1，则个位数出现1的
次数为十位数的数字加1；如果个位数为0，个位数出现1的次数等于十位数数字。而十位数上出现1的次数也不仅和
十位数相关，也和个位数相关：如果十位数字等于1，则十位数上出现1的次数为个位数的数字加1，假如十位数
大于1，则十位数上出现1的次数为10。
3位数的情况:
N=123
个位出现1的个数为13:1,11,21，…，91,101,111,121
十位出现1的个数为20:10~19,110~119
百位出现1的个数为24:100~123
 我们可以继续分析4位数，5位数，推导出下面一般情况：
假设N，我们要计算百位上出现1的次数，将由三部分决定：百位上的数字，百位以上的数字，百位一下的数字。
如果百位上的数字为0，则百位上出现1的次数仅由更高位决定，
比如12013，百位出现1的情况为100~199,1100~1199,2100~2199，…，11100~11199，共1200个。
等于更高位数字乘以当前位数，即12 * 100。
如果百位上的数字大于1，则百位上出现1的次数仅由更高位决定，比如12213，
百位出现1的情况为100~199,1100~1199,2100~2199，…，11100~11199，12100~12199共1300个。
等于更高位数字加1乘以当前位数，即（12 + 1）*100。
 如果百位上的数字为1，则百位上出现1的次数不仅受更高位影响，还受低位影响。例如12113，
受高位影响出现1的情况：100~199,1100~1199,2100~2199，…，11100~11199，共1200个，但它还受低位影响，
出现1的情况是12100~12113，共114个，等于低位数字113+1。
*/
#include <bits/stdc++.h>
#define ll long long
#define PI acos(-1)
const int INF = 1e9 + 7;
const int maxx = 1e6 + 1;
using namespace std;

int n, cnt;

int Count()
{
    cnt = 0;
    int i = 1, current = 0, before = 0, after = 0;
    // n/i 等于0的时候，此时i的值大于n，循环结束
    while ((n / i) != 0)
    {
        //举例来说明这三个数：例如12345，如果current为3，则before为12，after为45
        current = n / i % 10;
        before = n / i / 10;
        after = n - n / i * i;
        if (current > 1)
            cnt += (before + 1) * i;
        else if (current == 1)
            cnt += before * i + after + 1;
        else
            cnt += before * i;
        i *= 10;
    }
    return cnt;
}

int main()
{
    while(cin >> n)
    {
        cout << Count() << endl;
    }
    return 0;
}
